public class ClassTest {
    public static void main(String[] args) {
        // 方法一、 已知具体类、接口、基本数据类型... 可以通过 .class 属性直接获取 Class
        Class<String> stringClass = String.class;
        System.out.println(stringClass.getName());

        // 方法二、已知一个类的对象，通过 getClass 方法获得 Class
        String string = new String("abc");
        Class<? extends String> stringClass1 = string.getClass();
        System.out.println(stringClass1.getName());

        // 方法三、已知一个类的名称和该类的位置（类所在的包）， 可以通过 Class.forName 获得
        String className = "Person";
        try {
            Class<?> personClass = Class.forName(className);
            System.out.println(personClass.getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


        // 方法四：通过 ClassLoader 加载
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        try {
            Class<?> loadClass = systemClassLoader.loadClass(className);
            System.out.println(loadClass.getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }
}
